-- ATENÇÃO: Se estiver usando o arquivo PHP 'config.php', a conexão deve ser feita via mysqli ou PDO MySQL. 
-- Se o seu servidor é puramente PostgreSQL, você precisará adaptar as funções de conexão PHP para 'pg_connect' ou PDO Postgre.
-- O script abaixo corrige apenas a sintaxe de CRIAÇÃO das tabelas.

-- 1. TABELA users (Clientes e Admin)
-- DROP TABLE IF EXISTS users; -- Descomente esta linha se for refazer
CREATE TABLE users (
    id SERIAL PRIMARY KEY, -- CORREÇÃO AQUI
    nome VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    senha_hash VARCHAR(255) NOT NULL,
    objetivo TEXT NULL,
    -- Simulação do ENUM com VARCHAR e CHECK
    status VARCHAR(50) DEFAULT 'pendente' CHECK (status IN ('ativo', 'pendente', 'admin')),
    link_ref VARCHAR(50) UNIQUE NULL,
    pix_key VARCHAR(100) NULL,
    pix_key_type VARCHAR(50) DEFAULT 'cpf' CHECK (pix_key_type IN ('cpf', 'email', 'telefone', 'aleatoria')),
    ref_by_id INT NULL,
    data_cadastro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (ref_by_id) REFERENCES users(id)
);

-- Adicionar o usuário Admin (senha: 123456)
INSERT INTO users (nome, email, senha_hash, status, link_ref) VALUES 
('Admin Master', 'admin@energiafitne.com.br', '$2y$10$w09H/h8h8gGk.Dk0tU2YJ.u.Y4gK2K6TzU3X5M7A8N9V0L1P3R5S', 'admin', 'MASTER');


-- 2. TABELA commissions (Registro de Ganhos)
CREATE TABLE commissions (
    id SERIAL PRIMARY KEY, -- CORREÇÃO AQUI
    user_id_ganhador INT NOT NULL,
    user_id_referido INT NOT NULL,
    valor DECIMAL(10, 2) NOT NULL,
    nivel INT NOT NULL,
    status_pagamento VARCHAR(50) DEFAULT 'a pagar' CHECK (status_pagamento IN ('a pagar', 'pago', 'cancelado')),
    data_comissao TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id_ganhador) REFERENCES users(id),
    FOREIGN KEY (user_id_referido) REFERENCES users(id)
);

-- 3. TABELA payments (Registro de Pagamentos dos Clientes)
CREATE TABLE payments (
    id SERIAL PRIMARY KEY, -- CORREÇÃO AQUI
    user_id INT NOT NULL,
    valor DECIMAL(10, 2) NOT NULL,
    comprovante_url VARCHAR(255) NOT NULL,
    status VARCHAR(50) DEFAULT 'pendente' CHECK (status IN ('pendente', 'aprovado', 'rejeitado')),
    data_pagamento TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    data_aprovacao TIMESTAMP NULL,
    admin_id_aprovador INT NULL,
    FOREIGN KEY (user_id) REFERENCES users(id)
);

-- 4. TABELA workouts (Rotina de Treinos)
CREATE TABLE workouts (
    id SERIAL PRIMARY KEY, -- CORREÇÃO AQUI
    dia_semana VARCHAR(20) NOT NULL,
    exercicio_nome VARCHAR(255) NOT NULL,
    repeticoes VARCHAR(100) NOT NULL,
    tempo_descanso INT NOT NULL, -- Tempo em segundos
    foto_url VARCHAR(255) NOT NULL
);

-- 5. TABELA settings (Configurações Globais)
CREATE TABLE settings (
    setting_key VARCHAR(50) PRIMARY KEY,
    setting_value VARCHAR(255) NOT NULL
);

-- Insere as configurações iniciais
INSERT INTO settings (setting_key, setting_value) VALUES
('plano_mensal_valor', '30.00'),
('saque_minimo', '100.00'),
('saque_taxa_percentual_extra', '10'),
('saque_gratis_por_mes', '1'),
('admin_pix_key', '123.456.789-00'),
('admin_pix_name', 'ENERGIA FITNE LTDA')
ON CONFLICT (setting_key) DO UPDATE SET setting_value = EXCLUDED.setting_value; -- ON CONFLICT é o equivalente ao ON DUPLICATE KEY UPDATE do MySQL


-- 6. TABELA withdrawals (Pedidos de Saque)
CREATE TABLE withdrawals (
    id SERIAL PRIMARY KEY, -- CORREÇÃO AQUI
    user_id INT NOT NULL,
    valor_solicitado DECIMAL(10, 2) NOT NULL,
    taxa_aplicada DECIMAL(10, 2) DEFAULT 0.00,
    valor_a_pagar DECIMAL(10, 2) NOT NULL,
    status VARCHAR(50) DEFAULT 'pendente' CHECK (status IN ('pendente', 'em_analise', 'pago', 'rejeitado')),
    data_pedido TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    data_processamento TIMESTAMP NULL,
    FOREIGN KEY (user_id) REFERENCES users(id)
);